
import axios from 'axios'

// 创建一个 axios 实例
const service = axios.create({
    timeout: 60000
    // headers: {
    //   'userId': store.getters.userId ? store.getters.userId : ''
    // }
})

  // 请求拦截器
service.interceptors.request.use(
    (config) => {

  
      config.headers.common['Authorization'] = '0FB3F5E72E3B46A7B17FED49150400AC'

      return config
    },
    (error) => {
      // 发送失败
      Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    (response) => {

      const data = response.data

      // 统一对code进行强转处理
      data.status = Number(data.code || data.resCode || data.status)

      if (data.status !== 200) {

        if (data.status === 401) {

        }
        throw new Error(data.message || '返回数据有误。')
      }
      return data
    },
    (error) => {
      if (error && error.response) {
        const errorMessage = error.response.data && error.response.data.message
        console.log(error)
        switch (error.response.status) {
          case 100: error.message = '参数不能为空'; break
          case 101: error.message = '未查询到数据'; break
          case 102: error.message = '未整合所有县市下可研成果信息'; break
          case 400: error.message = '请求格式错误、参数错误'; break
          case 401: error.message = '未授权,请重新登录'; break
          case 404: error.message = '请求的资源不存在、数据不存在'; break
          case 409: error.message = '资源存在冲突、数据已存在'; break
          case 410: error.message = '重复提交'; break
          case 424: error.message = '违背数据完整性、当插入、删除和修改数据的时候，违背的数据完整性约束抛出的异常。例如：主键重复异常、存在外键关联数据依赖等'; break
          case 425: error.message = '关联关系重复'; break
          case 426: error.message = 'http解析异常'; break
          case 427: error.message = '关联文件删除异常'; break
          case 428: error.message = '关联文件不存在'; break
          case 429: error.message = '未定义流程'; break
          case 430: error.message = '文件为空，请重新上传'; break
          case 431: error.message = '存在未审核包，请审核通过后进行打包'; break
          case 432: error.message = '存在项目名称一样，请修改项目名称'; break
          case 500: error.message = errorMessage || '服务器内部错误'; break
          default: break
        }
      }
      try {
        const { status } = error.response || {}
        if (Number(status) === 401) {

        }
      } catch (error) {
        console.log(error)
      }
      // Message.error({ message: error.message, duration: 2000 })
      if (error.constructor.name !== 'Cancel') {

      }
      return Promise.reject(error)
    }
)


const ip = 'http://192.168.3.236:38080'

const server_url = {
    window: ip + '/wpc-datawindow', // 大屏展示
    design: ip + '/wpc-design', // 设计管理
    survey: ip + '/tnbs-survey', // 勘测服务
    report: ip + '/wpc-report', // 报表服务
    demand: ip + '/wpc-demand', // 需求编制服务
    file: ip + '/tnbs-filesystem', // 文件服务
    project: ip + '/project-center', // 项目中心
    bundle: ip + '/tnbs-bundle', // 编制服务
    basics: ip + '/tnbs-basics', // 用户中心
    tilemap: ip + '/tilemap-center', // 底图服务
    hnlcb: ip + '/wpc-hnlcb', // 工程管控 & 里程碑服务
    iscadapter: ip + '/iscadapter', // ISC 登录验证
}

const ajaxItem = {
    get: function (url, ...options) {
      let list = url.split('/')
      list.shift()
      list[0] = server_url[list[0]]
      url = list.join('/')
      return service.get(url, ...options)
    },
    post: function (url, ...options) {
      let list = url.split('/')
      list.shift()
      list[0] = server_url[list[0]]
      url = list.join('/')
      return service.post(url, ...options)
    }
}

export default ajaxItem
